package com.ssy.lingxi.contract.repository;

import com.ssy.lingxi.contract.entity.ContractDO;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;

import java.util.List;

/**
 * 合同
 * @author 伍将
 * @date 2021/2/2
 * @version 2.0.0
 */
public interface ContractRepository extends JpaRepository<ContractDO, Long>, JpaSpecificationExecutor<ContractDO>, QuerydslPredicateExecutor<ContractDO> {

    /**
     * 根据合同编号查询是否存在合同
     * @author 伍将
     * @date 2021/2/25
     * @param contractNO: 合同编号
     * @return true-存在，false-不存在
     **/
    Boolean existsByContractNo(String contractNO);

    /**
     * 根据合同编号查询是否存在非指定id的合同
     * @author 伍将
     * @date 2021/2/25
     * @param contractNO: 合同编号
     * @param contractId: 合同id
     * @return true-存在，false-不存在
     **/
    Boolean existsByContractNoAndIdNot(String contractNO, Long contractId);

    Integer countByCreateTimeBetween(Long startTime, Long endTime);

    /**
     * 查询合同外部状态为已完成签约的合同信息
     * @param ids: 合同id集合
     * @param outerStatus: 合同外部状态
     **/
    List<ContractDO> findAllByIdInAndOuterStatus(List<Long> ids, Integer outerStatus);
}
